2024 PHP Conference Japan

date

(PHP 4, PHP 5, PHP 7, PHP 8)

date格式化 Unix 時間戳記

說明

date(字串 $format, ?整數 $timestamp = null): 字串

根據給定的格式字串,使用給定的整數 timestamp(Unix 時間戳記)或目前時間(如果未提供時間戳記)返回格式化後的字串。換句話說,timestamp 是可選的,預設為 time() 的值。

警告

Unix 時間戳記不處理時區。請使用 DateTimeImmutable 類別及其 DateTimeInterface::format() 格式化方法來格式化帶有時區的日期/時間資訊。

參數

format

DateTimeInterface::format() 接受的格式。

注意由於 date() 接受 int 類型參數,它將始終產生 000000 作為微秒,而如果使用微秒建立 DateTimeInterface 類型的物件,則 DateTimeInterface::format() 支援微秒。

timestamp

可選的 timestamp 參數是一個 int 類型的 Unix 時間戳記,如果省略 timestamp 或其值為 null,則預設為目前的本地時間。換句話說,它預設為 time() 的值。

返回值

返回格式化的日期字串。

錯誤/異常

如果時區無效,每次呼叫日期/時間函式都會產生 E_WARNING。另請參閱 date_default_timezone_set()

更新日誌

版本 說明
8.0.0 timestamp 現在可以為 null。

範例

範例 #1 date() 範例

<?php
// 設定預設的時區。
date_default_timezone_set('UTC');


// 顯示類似:Monday 的內容
echo date("l");

// 顯示類似:Monday 8th of August 2005 03:12:46 PM 的內容
echo date('l jS \of F Y h:i:s A');

// 顯示:July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* 使用格式參數中的常數 */
// 顯示類似:Wed, 25 Sep 2013 15:28:57 -0700 的內容
echo date(DATE_RFC2822);

// 顯示類似:2000-07-01T00:00:00+00:00 的內容
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

您可以透過在格式字串中已識別的字元前加上反斜線來避免其被展開。如果帶有反斜線的字元已經是一個特殊序列,您可能也需要將反斜線跳脫。

範例 #2 在 date() 中跳脫字元

<?php
// 顯示類似:Wednesday the 15th 的內容
echo date('l \t\h\e jS');
?>

可以同時使用 date()mktime() 來查找未來或過去的日期。

範例 #3 date()mktime() 範例

<?php
$tomorrow
= mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
?>

注意事項:

由於日光節約時間的緣故,這種方法比直接對時間戳加減一天或一個月的秒數更可靠。

以下是一些 date() 格式化的範例。請注意,您應該將其他字元跳脫,因為任何目前具有特殊含義的字元都會產生非預期的結果,且其他字元在未來的 PHP 版本中可能會被賦予新的含義。跳脫字元時,請務必使用單引號,以防止像 \n 之類的字元變成換行符號。

範例 #4 date() 格式化

<?php
// 假設今天是 2001 年 3 月 10 日下午 5:16:18,且我們位於
// 山區標準時間 (MST) 時區

$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m 代表月份
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (MySQL DATETIME 格式)
?>

要以其他語言格式化日期,可以使用 IntlDateFormatter::format() 來取代 date()

注意事項

注意事項:

要從日期的字串表示法產生時間戳記,您可以使用 strtotime()。此外,某些資料庫具有將其日期格式轉換為時間戳記的函式(例如 MySQL 的 » UNIX_TIMESTAMP 函式)。

提示

請求開始的時間戳記可在 $_SERVER['REQUEST_TIME'] 中取得。

參見

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top